Proiect de laborator

Grupele 241 și 243

Precizări importante

Note
  1. Proiectele se realizează în echipă de 2-4 persoane. Fiecare echipa va desemna un lider care va fi precizat în documentație.

  2. Liderul echipei va trimite pe adresa simona.cojocea@fmi.unibuc.ro până la data de 1 februarie 2026 ora 22:00 o singură arhivă care va conține fișierele sursă ale proiectului împreună cu documentația.

  3. Documentația este obligatorie și lipsa ei atrage necorectarea proiectului.

  4. Documentația trebuie să conțină:

  • numele membrilor echipei
  • descrierea problemei
  • aspecte teoretice folosite în rezolvarea problemei care depășesc nivelul cursului
  • reprezentări grafice și orice altă formă multimedia oportună proiectului
  • precizări privind pachete software folosite și surse de inspirație
  • codul și comentarea acestuia, precum și a soluției prezentate
  • identificarea unor eventuale dificultăți în realizarea cerințelor
  • probleme care au rămas deschise în urma implementării actuale
  • concluzii

Documentația se dorește o prezentare completă a proiectului astfel încât evaluarea acestuia să poată fi făcută facil și nu o documentație uzuală pentru un produs software.

  1. Dacă se realizează cerințe suplimentare față de cele date, cerințe care să fie relevante, se poate obține un bonus de 5p, fără însă ca nota finală asociată laboratorului să poată depăși 50p.

  2. Orice informație care nu este expres precizată în enunț este lăsată la latitudinea voastră (ex. alegerea parametrilor repartițiilor), dar orice ipoteză suplimentară utilizată trebuie să fie specificată în documentație.

  3. Proiectul se dorește a fi o aplicație Shiny (Shiny - Welcome to Shiny) care să folosească modelarea probabilistică pentru rezolvarea unei probleme din zona IT. Partea de interfață în Shiny valorează \(10\) puncte, iar rezolvarea cerințelor împreună cu documentația valorează \(20\) de puncte. În cazul în care nu vă descurcați cu construirea interfeței, se acceptă și un proiect fără Shiny, pierzând însă punctajul aferent interfeței.

Analiza probabilistică a performanței unui serviciu online cu trafic aleator și impact economic

Se consideră o platformă online (aplicație web / API / microserviciu) care deservește utilizatori finali. Platforma procesează cereri (requests) venite de la un număr variabil de clienți, fiecare cerere fiind supusă incertitudinii: timpi de răspuns variabili, eșecuri temporare, reîncercări (retry), timeout-uri și politici de backoff.

Trafic zilnic

Numărul de clienți care accesează platforma într-o zi este aleator, notat \(K_d= \text{numărul de clienți activi în ziua } d\), și este influențat de factori externi (sezonalitate, campanii, popularitate). Acest trafic determină încărcarea sistemului și, implicit, performanța

Procesarea cererilor

Fiecare client generează cereri. O cerere poate: reuși sau eșua, fi reluată de cel mult \(N_{\text {max}}\) ori, avea timeout dacă depășește un prag de timp, aplica backoff între retry-uri.

Pentru o cerere, definim:

  • \(\boldsymbol{S}_{\boldsymbol{i}}\) - timpul de răspuns la încercarea \(i\);
  • \(\boldsymbol{U}_{\boldsymbol{i}} \in\{0,1\}\) - succes/eșec la încercarea \(i\);
  • \(\boldsymbol{B}_{\boldsymbol{i}}\) - backoff între încercări;
  • \(\boldsymbol{N}\) - numărul total de încercări;
  • \(\boldsymbol{T}\) - timpul total până la succes sau abandon;
  • \(\boldsymbol{I}\) - indicator de succes final.

Experiența utilizatorului și churn

Un utilizator poate părăsi aplicația(churn): aleator, fără o cauză direct observabilă sau condiționat de performanță, de exemplu dacă, într-o fereastră de timp sau într-un număr de cereri consecutive, prea multe cereri nu sunt rezolvate.

Impact economic

Fiecare cerere reușită produce un câstig, fiecare utilizator pierdut produce o pierdere (cost de achiziție + venituri viitoare ratate), iar nerespectarea SLA poate produce penalități.

Scopul proiectului este de a înțelege, prin modelare probabilistică și prin simulare în R, relația dintre trafic, performanță tehnică și impact economic.

Cerințe

Exercițiul 1 (Modelarea traficului zilnic (variabile aleatoare discrete))  

  1. Modelați \(K_d\) folosind, pe rând, cel puțin două distribuții discrete (ex.: Poisson, Binomială).

  2. Generați prin simulare eșantioane mari care să reprezinte traficul zilnic pentru o perioadă de câțiva ani și reprezentați histogramele asociate acestora. Interpretați comparativ histogramele obținute pe luni și pe ani.

  3. Estimați empiric media și varianța traficului pentru fiecare an și comparați cu valorile teoretice.

  4. Interpretați diferențele între modele (trafic redus vs plafonat).

Exercițiul 2 (Modelarea timpilor de răspuns (variabile aleatoare continue))  

  1. Modelați \(S\), pe rând, cu o distribuție asimetrică (Exponențială/Gamma) și respectiv cu o distribuție Normală (eventual trunchiată la valori pozitive).

  2. Construiți histogramele pentru \(S\) și suprapuneți peste acestea densitățile teoretice.

  3. Calculați media, varianța, mediana, valoarea modală și interpretați rezultatele obținute.

  4. Discutați diferența dintre medie și mediană în contextul latențelor.

Exercițiul 3 (Cereri, retry-uri și evenimente) Definiți evenimentele:

  • \(A=\{I=1\}\) (succes);
  • \(B=\left\{T \leq t_0\right\}\) (SLA);
  • \(C=\left\{N \leq n_0\right\}\);
  • \(D=\{\text{cel puțin un eșec}\}\).
  1. Estimați empiric: \(\mathbb{P}(A), \mathbb{P}(B), \mathbb{P}(C), \mathbb{P}(A \cap B), \mathbb{P}(A \cup D)\)

  2. Verificați numeric formulele pentru reuniune/intersecție

  3. Explicați de ce probabilitatea empirică aproximează bine probabilitatea teoretică.

Exercițiul 4 (Variabile aleatoare bidimensionale discrete) Considerați variabila bidimensională \((N, F)\), unde \(F\) este numărul de eșecuri. Determinați:

  1. Distribuția comună empirică;

  2. Distribuțiile marginale;

  3. Un test empiric de independență;

  4. O modalitate de vizualizare (tabel/heatmap) și interpretare.

Exercițiul 5 (Variabile aleatoare bidimensionale (discrete și continue)) Considerați variabila bidimensională \((N, T)\).

  1. Reprezentați grafic variabila bidimensională \((N, T)\).

  2. Calculați mediile, varianțele, covarianța și coeficientul de corelație

  3. Interpretați corelația (retry-uri vs latență totală).

Exercițiul 6 (Probabilități condiționate și condiționări)  

  1. Estimați \(\mathbb{P}\left(A \mid N \leq n_0\right), \mathbb{P}(B \mid A)\).

  2. Calculați: \(\mathbb{E}(T \mid I=1), \mathbb{E}(T \mid I=0)\).

  3. Interpretați rezultatele din perspectiva experienței utilizatorului.

Exercițiul 7 (Independență vs dependență)  

  1. Simulați două scenarii: timpi \(S_i\) independenți vs dependenți (latența crește după eșecuri).

  2. Comparați distribuția și varianța lui \(T\) în cele două scenarii.

  3. Formulați concluzii privind riscul și stabilitatea sistemului.

Exercițiul 8 (Inegalități probabilistice (garanții worst-case)) Pentru \(T \geq 0\):

  1. Verificați numeric inegalitățile Markov și Cebîșev (empiric versus teoretic).

  2. Pentru variabila număr de eșecuri/încercări verificați o inegalitate de tip Chernoff.

  3. Interpretați utilitatea acestor limite când distribuțiile exacte sunt necunoscute.

  4. Pentru o funcție convexă \(\varphi\) (ex.: \(x^2, e^x\) ) verificați numeric \(\varphi(\mathbb{E}(T)) \leq \mathbb{E}(\varphi(T))\) (inegalitatea lui Jensen)

  5. Interpretați rezultatul de la d) în contextul riscului (penalizarea valorilor extreme).

Exercițiul 9 (Aproximare normală și agregare)  

  1. Pentru sume/agregări zilnice (ex.: total latență pe zi sau profit zilnic), studiați oportunitatea aproximării cu o distribuție normală prin simulare.

  2. Comparați histograma agregatului cu o normală ajustată și precizați când aproximarea este adecvată.

Exercițiul 10 (Churn (pierderea utilizatorilor)) Pierderea utilizatorilor se realizează prin două mecanisme: aleator (cu o probabilitate constantă \(q\) ) și respectiv condiționat, dacă într-o fereastră de \(m\) cereri, cel puțin \(k\) eșuează.

  1. Modelați probabilistic cele două scenarii.

  2. Estimați probabilitatea de pierdere a utilizatorului.

  3. Comparați scenariile și interpretați.

Exercițiul 11 (Impact economic)  

  1. Definiți o v.a. pentru profitul zilnic(câștig per succes, pierdere per churn, penalități SLA).

  2. Estimați media, varianța, și (opțional) intervale de încredere pentru profit.

  3. Analizați compromisurile tehnico-economice.

Exercițiul 12 (Vizualizare statistică)  

  1. Histograme pentru \(T\) și profit.

  2. Boxplot-uri pentru \(T\) condiționat de succes/eșec și pentru scenarii diferite.

  3. Interpretați mediană, IQR, outlieri.

Exercițiul 13 (Analiză de sinteză) În raport cu problema modelată, comentați:

  1. Rolul probabilității empirice

  2. Ce informații aduc condiționările

  3. Utilitatea inegalităților probabilistice

  4. Legătura dintre performanța tehnică și impactul economic

  5. Ce parametri influențează cel mai mult rezultatele finale și ce ați modifica pentru îmbunătățirea sistemului.